﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Runtime.Serialization;

namespace Ramp.Service.Contract
{
    /// <summary>
    /// Service Contract Interface for Holding the WCF RampService Object.
    /// </summary>
    [ServiceContract()]
    public interface IRampService
    {
        /// <summary>
        /// Sets the load test running status.
        /// </summary>
        /// <param name="value">if set to <c>true</c> [value].</param>
        [OperationContract]
        void SetLoadTestRunningStatus(bool value);

        /// <summary>
        /// Gets the load test running status.
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        bool GetLoadTestRunningStatus();

        /// <summary>
        /// Sets the load test scenarios.
        /// </summary>
        /// <param name="values">The values.</param>
        [OperationContract]
        void SetLoadTestScenarios(List<string> values);

        /// <summary>
        /// Gets the load test scenarios.
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        List<string> GetLoadTestScenarios();

        /// <summary>
        /// This method is used as a flag to trigger whether an updated scenario exists
        /// and the LoadTest behaviour should be adjusted based on that.
        /// </summary>
        /// <param name="value">if set to <c>true</c> [value].</param>
        [OperationContract]
        void SetScenarioChanged(bool value);

        /// <summary>
        /// Gets the flag which indicates whether a scenario change has been undertaken.
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        bool GetScenarioChanged();
    }
}
